package Test.Test02;

import java.util.Scanner;

/**
 * 四达时代需要定期从国内向非洲运货，现在有一个需求，需要知道每次供货时在规定时间H内运输完成的最小的运输速度是多少个/小时？
 *
 * 通过这个数值可以有效安排清关人员数量、机器数量，节约在货物运输时的人力与物力成本。
 *
 * 已知有N批货物，第 i 批的货物有goods[ i ]个机顶盒、智能卡或者太阳能设备等，货物的平均运输速度为K（个/小时），且不能同时运输多个批次的货物。
 *
 * 请你设计算法得到这个指标，求出在H个小时内将货物全部的运输到货运船的最小运输速度K是多少？
 *
 * 参数说明：
 *
 * 1 <= N <= 100
 *
 * N <= H <=1000
 *
 * 1 <= goods[i] <= 1000
 *
 *
 * Input
 * 使用英文逗号分隔的商品个数的字符串，空格，限制完成运输的小时数值H
 *
 *
 * Output
 * 输出最小运输速度K
 *
 *
 * Sample Input 1
 *
 * 3,6,7,11 8
 * Sample Output 1
 *
 * 4
 * Sample Input 2
 *
 * 30,11,23,4,20 5
 * Sample Output 2
 *
 * 30
 */
public class MinTransportSpeed {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

//        System.out.print("请输入商品个数（以逗号分隔）：");
        String goodsString = scanner.next();
        String[] goodsArr = goodsString.split(",");
        int N = goodsArr.length;
        int[] goods = new int[N];
        int maxGoods = Integer.MIN_VALUE;
        for (int i = 0; i < N; i++) {
            goods[i] = Integer.parseInt(goodsArr[i]);
            maxGoods = Math.max(maxGoods, goods[i]); // 记录最大货物数量
        }

//        System.out.print("请输入限制完成运输的小时数 H：");
        int H = scanner.nextInt();

        int left = 1; // 最小速度下界
        int right = maxGoods; // 最大速度上界
        int result = 0;

        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (canTransport(goods, H, mid)) {
                result = mid;
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }

        System.out.println("最小运输速度 K 为：" + result);

        scanner.close();
    }

    private static boolean canTransport(int[] goods, int H, int speed) {
        int time = 0;
        for (int i = 0; i < goods.length; i++) {
            time += (int) Math.ceil((double) goods[i] / speed); // 计算每批货物的运输时间
            if (time > H) {
                return false; // 若总运输时间超过规定时间 H，则返回 false
            }
        }
        return true;
    }
}